数学模型

Wang Haihua

🍈 🍉🍊 🍋 🍌


建立微分方程模型一般可分以下三步:

物体冷却模型

问题

将某物体放置于空气中, 在时刻 $t=0$ 时, 测量得它的温度为 $u_{0}=150^{\circ} \mathrm{C}$, 10 分钟后测量得它的温度为 $u_{1}=100^{\circ} \mathrm{C}$. 要求建立此物体的温度 $u$ 和时间 $t$ 的关系, 并计算 20 分钟后物体的温度。其中我们假设空气的温度保持为 $\tilde{\boldsymbol{u}}=24^{\circ} \mathrm{C}$ 。

建模

Newton冷却定律是温度高于周围环境的物体向周围媒质传递热量逐渐冷却时所遵循的规律:当物体表面与周围存在温度差时,单位时间从单位面积散失的热量与温度差成正比,比例系数称为热传递系数。

设该物体在时刻 $t$ 时的温度为 $u=u(t)$, 则由 Newton 冷却定律, 得到 $$ \frac{d u}{d t}=-k(u-\tilde{u}), $$ 其中, $k>0$, 方程就是物体冷却过程的数学模型。

求解

注意到 $\tilde{u}=24$ 为常数, $\boldsymbol{u}-\tilde{\boldsymbol{u}}>0$, 可将方程改写为 $$ \frac{d(u-24)}{u-24}=-k d t $$ 两边积分得到 $$ \int_{150}^{u} \frac{d(u-24)}{u-24}=\int_{0}^{t}-k d t $$ 化简得 $$ u=24+126 e^{-k t} $$

解释

把条件 $t=10$ 时, $u=u_{1}=100$ 代入式, 得 $k=\frac{1}{10} \ln \frac{126}{76}=0.0506$, 所以此物体的温度 $u$ 和时间 $t$ 的关系为 $u=24+126 e^{-0.0506 t}$ 。 20 分钟后物体的温度为 $69.8413^{\circ} \mathrm{C}$ 。

代码

import sympy as sp
sp.var('t, k')  #定义符号变量t,k
u = sp.var('u', cls=sp.Function)  #定义符号函数
eq = sp.diff(u(t), t) + k * (u(t) - 24)  #定义方程
uu = sp.dsolve(eq, ics={u(0): 150}) #求微分方程的符号解
print(uu)

kk = sp.solve(uu, k)  #kk返回值是列表,可能有多个解
k0 = kk[0].subs({t: 10.0, u(t): 100.0})
print(kk, '\t', k0)
u1 = uu.args[1]  #提出符号表达式
u0 = u1.subs({t: 20, k: k0})  #代入具体值
print("20分钟后的温度为:", u0)

[log(126/(u(t) - 24))/t] 0.0505548566665147 20分钟后的温度为: 69.8412698412698

参考文献